#ifndef PROGRAM_H
#define PROGRAM_H

#include <QObject>
#include "person.h"
#include <QObject>
#include "iostream"
#include "sstream"
#include "vector"
using namespace std;
using std::ios;
using std::vector;
class Program : public QObject
{
    Q_OBJECT
public:
    explicit Program(QObject *parent = nullptr);
    Program(QString id,QString na,QString ty, QString mas,QString fie,QString star,
            float mon,vector<QString> peo,bool ag =0,float virmon = 0,QString remar = "\0",int sta =0 ); ///普通用户项目申报

    void setstatus (int s); ///用于root用户同意项目申请或者用户结题

    bool ifover ();      ///返回1，表示项目已经完成，返回0，表示项目没有完成

    int showstatus ();
    void addpeo(QString id); ///添加新的研究人员
    bool ifhere(QString name);
    bool agreeornot();
    float showmoney ();
    void addmoney(float a);
    bool ifaskmoney ();///返回1，表示要钱
    float  showvmoney();
    void clearvirmoney();
    void givemoney();
    void agree(bool i);
    QString showid();

    QString showname();
    QString showtype();
    QString showmaster();
    QString showfield();
    QString showtime();
    bool iftogether (QString peo1, QString peo2); ///判断两个人是否在同一个项目中
    bool ifhave(QString mes );
    QString showrem();
    void save(ostringstream& os);
    vector <QString> people;  ///研究人员列表,建议用学工号表示
protected:
    QString ID;///编号
    QString name; ///名称
    QString type; ///类别
    QString master; ///主持人 或许以后可以用Teacher类型来实现
    QString field;  ///领域
    QString startime; ///项目开始的时间
    float money; ///项目目前的资金
    int status; ///在研状态

    bool ifagree; ///是否同意申报资金
    float virmoney; ///申报的未入账的资金
    ///0表示刚刚申报   1表示正在研究   2表示研究已经完成

    QString remarks; ///备注

    ///此处没有加入论文列表

signals:

};

#endif // PROGRAM_H
